package leetcode.editor.day;

// 640. 求解方程
// https://leetcode.cn/problems/solve-the-equation/
class SolveTheEquation {
    public static void main(String[] args) {
        Solution solution = new SolveTheEquation().new Solution();
    }

    //leetcode submit region begin(Prohibit modification and deletion)
    class Solution {
        // https://leetcode.cn/problems/solve-the-equation/solution/by-tong-zhu-nqic/
        // 将 = 分割，- 替换为 +-，按照 + 分割
        public String solveEquation(String equation) {
            int left = 0, right = 0;    // left表示x的系数，right表示右边的数值
            // x 放在左边，其他放在右边
            String[] arr1 = equation.split("=");
            String[] arr2 = arr1[0].replaceAll("-", "+-").split("\\+");
            String[] arr3 = arr1[1].replaceAll("-", "+-").split("\\+");

            // 处理左边
            for (String s : arr2) {
                if (s.equals("x")) {
                    left++;
                } else if (s.equals("-x")) {
                    left--;
                } else if (s.contains("x")) {
                    // 如果包含系数，加上系数
                    left += Integer.parseInt(s.substring(0, s.length() - 1));
                } else if (!s.equals("")) {
                    // 如果是数字
                    right -= Integer.parseInt(s);
                }
            }

            // 处理右边
            for (String s : arr3) {
                if (s.equals("x")) {
                    left--;
                } else if (s.equals("-x")) {
                    left++;
                } else if (s.contains("x")) {
                    // 如果包含系数，加上系数
                    left -= Integer.parseInt(s.substring(0, s.length() - 1));
                } else if (!s.equals("")) {
                    // 如果是数字
                    right += Integer.parseInt(s);
                }
            }

            if (left == 0) {
                if (right == 0) {
                    return "Infinite solutions";
                } else {
                    return "No solution";
                }
            } else {
                // 系数相除
                return "x=" + right / left;
            }

        }
    }
//leetcode submit region end(Prohibit modification and deletion)

}
